<?php
/**
 * 
 * \file Formulaires.php
 * \author Mualig
 * \version 0.1
 * \date 16 avril 2009
 *
 */

/** 
 * \class Formulaires
 * \brief Classe contenant toutes les fonctions relatives aux formulaires.
 * 
 * Cette classe contient : 
 *		- toutes les informations et les fonctions aux formulaires
 *		- toutes les fonctions de création des formulaires
 *
 */
class Formulaires {

	/*
	*  Methodes
	*/

	/** \fn __construct ()
	 * \brief Constructeur de la classe
	 * 
	 * @return Pas de retour.
	 */
	public function __construct(){
	
	}

	
	/*
	 *  Fonctions concernant les formulaires
	 */
	
	
	/** 
	 * \brief Implantation du debut d'un formulaire.
	 * 
	 * Cette fonction implante le début d'un formulaire. 
	 * Avec un titre, un sous-titre et la balise form avec ces paramètres.
	 * 
	 * @param $titre string contenant le titre du formulaire.
	 * @param $small string contenant le sous-titre du formulaire.
	 * @param $nom_formulaire string contenant le nom du formulaire ('name').
	 * @param $action string contenant l'action qu'effectuera le formulaire lors de la validation.
	 * @return Pas de retour.
	 */	
	public function debut_formulaire ($titre,$small,$nom_formulaire,$action) {
		
		echo "<center> <b> <h1> $titre </h1> </b> </center> \n";
    	echo "<p> $small </p> \n";
    	echo "<form name='$nom_formulaire' action='$action' method='post'> \n";
    
	}
	
	
	/**
	 * \brief Implantation de la fin d'un formulaire.
	 * 
	 * Cette fonction implante a fin du formulaire commencé avec la fonction debut_formulaire. 
	 * Avec un bouton Valider qui envois les informations, un bouton Annuler qui vide le formulaire et la balise fin de form.
	 * 
	 * @return Pas de retour.
	 */
	public function fin_formulaire () {
		
		echo "<center><button type='submit' name='ADD_USER'> Valider </button> \n";
    	echo "<button type='reset' name='Reset'> Annuler </button></center></div></center> \n";
    	echo "</form> \n";
		
	}

	/**
	 * \brief Implantation de la fin d'un formulaire sans bouton.
	 * 
	 * Cette fonction implante a fin du formulaire commencé avec la fonction debut_formulaire. 
	 * Sans bouton et la balise fin de form.
	 * 
	 * @return Pas de retour.
	 */
	public function fin_formulaire_sb () {
		
		echo "<center><button type='submit' name='ADD_USER'> Valider </button> \n";
    	echo "<button type='reset' name='Reset'> Annuler </button></center> \n";
    	echo "</form> \n";
		
	}
	
	
	/**
	 * \brief Création d'une liste de toutes les sources.
	 * 
	 * Cette fonction crée une liste (input de type select) contenant toutes les sources de la base de données.
	 * 
	 * @param $label string contenant le label de la liste.
	 * @param $small string contenant le sous-titre de la liste.
	 * @param $name string contenant le nom de l'input.
	 * @return Pas de retour.
	 */
	public function select_S ($label,$small,$name) {
		
		//requete permettant de selectionner l'identifiant et la denomination de toutes les sources
		$q = "select id_S, denomination_s from source";
		$r = mysql_query($q);
		
		//creation du champ "select" avec les parametres de la fonction
		echo "<label>$label";
		echo "<span class='small'>$small</span>  </label> \n";
		echo "<select name ='$name' /> \n";

		//creation de la liste deroulante contenant toutes les sources
		while($row = mysql_fetch_assoc($r) ) {
			echo "\t <option value=".$row['id_S']." />".$row['denomination_s']."</option> \n";
		}

		//fin du select
    	echo '</select>';
		
	}
	

	/**
	 *\brief Création d'une liste de tous les revendeurs.
	 *
	 * Cette fonction crée une liste (input de type select) contenant tous les revendeurs de la base de données.
	 *
	 * @param $label string contenant le label de la liste.
	 * @param $small string contenant le sous-titre de la liste.
	 * @param $name string contenant le nom de l'input.
	 * @return Pas de retour.
	 */
	public function select_R ($label,$small,$name) {
		
		//requete permettant de selectionner l'identifiant et la denomination de tous les revendeurs
		$q = "select id_r, denomination_r from revendeur";
		$r = mysql_query($q);
		
		//creation du champ "select" avec les parametres de la fonction
		echo "<label>$label";
		echo "<span class='small'>$small</span>  </label> \n";
		echo "<select name ='$name' /> \n";

		//creation de la liste deroulante contenant tous les revendeurs
		while($row = mysql_fetch_assoc($r) ) {
			echo "\t <option value=".$row['id_r']." />".$row['denomination_r']."</option> \n";
		}

		//fin du select
    	echo '</select>';
		
	}
	
	
	/**
	 *\brief Création d'une liste de toutes les sources et de tous les revendeurs.
	 *
	 * Cette fonction crée une liste (input de type select) contenant toutes les sources et tous les revendeurs de la base de données.
	 *
	 * @param $label string contenant le label de la liste.
	 * @param $small string contenant le sous-titre de la liste.
	 * @param $name string contenant le nom de l'input.
	 * @return Pas de retour.
	 */
	public function select_SR($label,$small,$name) {
		
		//requete permettant de selectionner l'identifiant et la denomination de toutes les sources
		$q1 = "select id_s, denomination_s from source";
		$r1 = mysql_query($q1);
		
		//requete permettant de selectionner l'identifiant et la denomination de tous les revendeurs
		$q2 = "select id_r, denomination_r from revendeur";
		$r2 = mysql_query($q2);
		
		//creation du champ "select" avec les parametres de la fonction
		echo "<label>$label \n";
		echo "<span class='small'>$small</span>  </label> \n";
		echo "<select name ='$name' /> \n";

		//creation de la liste deroulante contenant toutes les sources et tous les revendeurs
		echo "<optgroup label='Source'>";
		while($row = mysql_fetch_assoc($r1) ) {
			echo "\t <option value=src_".$row['id_s']." />".$row['denomination_s']."</option> \n";
		}
		echo "</optgroup>";
		
		echo "<optgroup label='Revendeur'>";
		while($row = mysql_fetch_assoc($r2) ) {
			echo "\t <option value=rev_".$row['id_r']." />".$row['denomination_r']."</option> \n";
		}
		echo "</optgroup>";
		
		//fin du select
    	echo '</select>';
		
	}
	

	/**
	 *\brief Création d'une liste de toutes les sources, de tous les revendeurs et de tous les clients.
	 *
	 * Cette fonction crée une liste (input de type select) contenant toutes les sources et tous les revendeurs de la base de données.
	 *
	 * @param $label string contenant le label de la liste.
	 * @param $small string contenant le sous-titre de la liste.
	 * @param $name string contenant le nom de l'input.
	 * @return Pas de retour.
	 */
	public function select_SRC($label,$small,$name) {
		
		$q1 = "select id_S, denomination_s from source";
		$r1 = mysql_query($q1);
		
		$q2 = "select id_R, denomination_r from revendeur";
		$r2 = mysql_query($q2);
		
		$q3 = "select id_C, denomination_c from client";
		$r3 = mysql_query($q3);
		
		echo "<label>$label \n";
		echo "<span class='small'>$small</span>  </label> \n";
		echo "<select name ='$name' /> \n";

		while($row = mysql_fetch_assoc($r1) ) {
			echo "\t <option value=src_".$row['id_S']." />".$row['denomination_s']."</option> \n";
		}
		
		while($row = mysql_fetch_assoc($r2) ) {
			echo "\t <option value=rev_".$row['id_R']." />".$row['denomination_r']."</option> \n";
		}
			
		while($row = mysql_fetch_assoc($r3) ) {
			echo "\t <option value=cli_".$row['id_C']." />".$row['denomination_c']."</option> \n";
		}
		
    	echo '</select>';
		
	}
	
	
	/**
	 *\brief Création d'un input de type text.
	 *
	 * Cette fonction crée un input de type text avec un titre et un sous-titre, avec les paramètres qui lui sont passés
	 * 
	 * @param $label string contenant le titre de l'input
	 * @param $small string contenant le sous-titre de l'input
	 * @param $name string contenant le nom de l'input
	 * @param $value string contenant la valeur par défaut de l'input
	 * @param $size int contenant la taille de l'input
	 * @param $max int contenant la taille maximal du texte de l'input
	 * @return Pas de retour.
	 */
	public function textbox ($label,$small,$name,$value,$size,$max) {
	
		//création du titre
		echo "<label> $label \n";
		//création du sous-titre
    	echo "<span class='small'>$small</span> </label> \n";
    	//création de l'input
    	echo "<input type='text' name='$name' value='$value' size=$size maxlength=$max /> \n";

	}
	
	
	
	/**
	 * \brief Crée un liste avec les différents type de compte.
	 * 
	 * Cette fonction crée une liste (input de type select) avec tous les différents type de conpte qu'il peut y avoir :
	 * 		- Source
	 * 		- Revendeur
	 * 		- Client
	 * 
	 * @param $label string contenant le titre de l'input
	 * @param $small string contenant le sous-titre de l'input
	 * @param $name string contenant le nom de l'input
	 * @return Pas de retour.
	 */
	public function select_type ($label,$small,$name) {
		
		//création du titre, sous-titre et de l'input
		echo "<label>$label \n";
		echo "<span class='small'>$small</span>  </label> \n";
		echo "<select name ='$name' /> \n";
		
		//liste des valeurs possibles
		echo "\t <option value='source' /> Source </option> \n";
		echo "\t <option value='revendeur' /> Revendeur </option> \n";
		echo "\t <option value='client' /> Client </option> \n";
		
		echo "</select> \n";
		
	}
	
	
	/**
	 * \brief Crée un liste avec les tables de la BDD.
	 * 
	 * Cette fonction crée une liste (input de type select) contenant toutes les tables de la base de données dans lesquelles
	 * on peut effectuer une recherche.
	 * 
	 * @param $label string contenant le titre de l'input
	 * @param $small string contenant le sous-titre de l'input
	 * @param $name string contenant le nom de l'input
	 * @return Pas de retour.
	 */
	public function select_origine_rech ($label,$small,$name) {
		
		//création du titre, sous-titre et de l'input
		echo "<label>$label \n";
		echo "<span class='small'>$small</span>  </label> \n";
		echo "<select name ='$name' /> \n";
		
		//liste avec toutes les tables dans lesquelles on peut faire une recherche
		echo "\t <option value='tous' /> Tous </option> \n";
		echo "\t <option value='compte' /> Compte </option> \n";
		echo "\t <option value='source' /> Source </option> \n";
		echo "\t <option value='revendeur' /> Revendeur </option> \n";
		echo "\t <option value='client' /> Client </option> \n";
		echo "\t <option value='serveur' /> Serveur </option> \n";
		echo "\t <option value='contact' /> Contact </option> \n";
		
		echo "</select> \n";
		
	}
	

	/**
	 * \brief Crée une zone de texte.
	 * 
	 * Cette fonction crée une zone de texte (textarea) pour pouvoir faire des commentaires lors de certaines étapes de la création d'un compte.
	 * 
	 * @param $label string contenant le titre de l'input
	 * @param $small string contenant le sous-titre de l'input
	 * @param $name string contenant le nom de l'input
	 * @param $value string contenant la valeur par défaut de l'input
	 * @return Pas de retour.
	 */
	public function commentaire ($label,$small,$name,$value) {
		
		//création du titre, sous-titre et de la textarea
		echo "<label> $label \n";
		echo "<span class='small'> $small </span>  </label> \n";
		echo "<textarea name=$name value='$value' id='commentaire'> </textarea> \n";
		
	}
	
	
	/**
	 * \brief Crée un input avec un calendrier JS.
	 * 
	 * Cette fonction crée un input de type text dans lequel on peut choisir la date grâce à un calendrier JAVASCRIPT.
	 * 
	 * @param $label string contenant le titre de l'input
	 * @param $small string contenant le sous-titre de l'input
	 * @param $name string contenant le nom de l'input
	 * @return Pas de retour.
	 */
	public function calendrier_js ($label,$small,$name) {
		
		//création du titre, sous-titre et de l'input
		echo "<label> $label \n";
		echo "<span class='small'> $small </span> </label> \n";
		echo "<input type='text' value=".date('Y-m-d')." readonly name=$name 
		onclick='displayCalendar(document.forms[0].$name,\"yyyy-mm-dd\",this)'/>";
		
	}
	

	/**
	 * \brief Crée une liste avec tous les serveurs.
	 * 
	 * Cette fonction crée une liste (input de type select) avec tous les serveurs présent dans la base de données.
	 * 
	 * @param $label string contenant le titre de l'input
	 * @param $small string contenant le sous-titre de l'input
	 * @param $name string contenant le nom de l'input
	 * @return Pas de retour.
	 */
	public function select_serveur ($label,$small,$name) {
		
		$q = "select nom_serveur from serveur";
		$r = mysql_query($q);
		
		echo "<label>$label \n";
		echo "<span class='small'>$small</span>  </label> \n";
		echo "<select name ='$name' /> \n";
		
		while($row = mysql_fetch_assoc($r) ) {
			echo "\t <option value=".$row['nom_serveur']." />".$row['nom_serveur']."</option> \n";
		}
		
		echo "</select> \n";
		
	}
	

	/**
	 * \brief Crée une liste avec tous les comptes.
	 * 
	 * Cette fonction crée une liste (input de type select) avec tous les n-uplets de la table compte_unix pour pouvoir lier d'autres entités à ce compte.
	 * 
	 * @param $label string contenant le titre de l'input
	 * @param $small string contenant le sous-titre de l'input
	 * @param $name string contenant le nom de l'input
	 * @return Pas de retour.
	 */
	public function select_compte ($label,$small,$name) {
		
		$q = "select login from compte_unix";
		$r = mysql_query($q);
		
		echo "<label>$label \n";
		echo "<span class='small'>$small</span>  </label> \n";
		echo "<select name ='$name' /> \n";
		
		while($row = mysql_fetch_assoc($r) ) {
			echo "\t <option value=".$row['login']." />".$row['login']."</option> \n";
		}
		
		echo "</select> \n";
		
	}
		
	
	/**
	 * \brief Génère un mot de passe.
	 * 
	 * Cette fonction génère un mot de passe de façon aléatoire en prenant des caractères (lettres, chiffres et caractères spéciaux) aléatoirement dans 
	 * 2 tableaux.
	 * 
	 * @return $ret string contenant le mot de passe
	 */
	public function password () {
		
		$tab = array('a','b','c','d','e','f','g','h','i','j','k','m','n','o','p','q','r','s','t','u','v','w','x','y','z',
		'0','1','2','3','4','5','6','7','8','9');
		$tab2= array('.','@','*','$','_','-','?','!','=','+');
		
		$algo = rand(0,4);
		
		switch ($algo) {
			
			case 0 :
				$ret = $tab[rand(0,34)].$tab[rand(0,34)].$tab2[rand(0,9)].$tab[rand(0,34)].$tab[rand(0,34)].$tab[rand(0,34)].$tab[rand(0,34)].$tab2[rand(0,9)];
				break;
			case 1 :
				$ret = $tab[rand(0,34)].$tab2[rand(0,9)].$tab[rand(0,34)].$tab[rand(0,34)].$tab[rand(0,34)].$tab[rand(0,34)].$tab2[rand(0,9)].$tab[rand(0,34)];
				break;
			case 2 :
				$ret = $tab2[rand(0,9)].$tab[rand(0,34)].$tab[rand(0,34)].$tab[rand(0,34)].$tab[rand(0,34)].$tab2[rand(0,9)].$tab[rand(0,34)].$tab[rand(0,34)];
				break;
			case 3 :
				$ret = $tab[rand(0,34)].$tab[rand(0,34)].$tab[rand(0,34)].$tab[rand(0,34)].$tab2[rand(0,9)].$tab[rand(0,34)].$tab[rand(0,34)].$tab2[rand(0,9)];
				break;
			case 4 :
				$ret = $tab[rand(0,34)].$tab[rand(0,34)].$tab[rand(0,34)].$tab2[rand(0,9)].$tab[rand(0,34)].$tab[rand(0,34)].$tab2[rand(0,9)].$tab[rand(0,34)];
				break;
		}
		return $ret;
	}
	
	
	/**
	 * \brief Laisse une ligne vide
	 * 
	 * Cette fonction laisse un ligne vide la où elle est implanté.
	 * 
	 * @return Pas de retour
	 */
	public function ligne_vide () {
		
		echo "<br> <br>";
	}

	/**
	 * \brief Trace un trait
	 * 
	 * Cette fonction trace un trait simple la où elle est implanté.
	 * 
	 * @return Pas de retour
	 */
	public function trait () {
		
		echo "<p></p>";
		
	}
	
	
	/**
	 * \brief Affiche un compte unix
	 * 
	 * Cette fonction permet d'afficher le compte unix dont les valeurs sont passés en paramètres
	 * 
	 * @param $login string contenant le login du compte
	 * @param $password string contenant le mot de passe du compte
	 * @param $origine string contenant le nom de la source ou du revendeur ayant apporté le client
	 * @param $createur string contenant le nom de la personne ayant créée le compte
	 * @param $path string contenant le path du compte client
	 * @param $quota int contenant le volume alloué au compte
	 * @return unknown_type
	 */
	public function affichage_cu ($login,$password,$origine,$createur,$path,$quota) {
		
	$this->debut_formulaire("Compte Unix créé","","form_compt","index.php?page=compte");
	$this->textbox("Login *","Login du compte Unix","login",$login,50,50);
	$this->textbox("Password *","Mot de passe du compte","password",$password,8,8);
	$this->textbox("Origine *","Origine du compte","origine",$origine,50,50);
	$this->textbox("Créateur *","Créateur du compte","createur",$createur,50,50);
	$this->textbox("Quota *","Volume a allouer au compte","quota",$quota,7,7);
	$this->textbox("Path *","Path du compte","path",$path,50,255);
	$this->fin_formulaire_sb();
		
	}
	
}

?>